///////////////////////////////////////////////////////////////////////////////
////  (c) Chaichuk AU (chaichuk@mail.ru), 								   ////
////  2004, Chelyabinsk, NTC Privodnaya Tehnika (momentum@chel.surnet.ru)  ////
///////////////////////////////////////////////////////////////////////////////

/* CwTrend.h - widget header file */
#ifndef __CWTREND_H_
#define __CWTREND_H_

#include <Pt.h>
#include <cogent.h>

/* widget resources */
#define TREND_ARG_GRID_COLOR		Pt_RESOURCE (Pt_USER (0), 0)

#define TREND_ARG_TOP_MG			Pt_RESOURCE (Pt_USER (0), 10)
#define TREND_ARG_BOT_MG			Pt_RESOURCE (Pt_USER (0), 11)
#define TREND_ARG_LFT_MG			Pt_RESOURCE (Pt_USER (0), 12)
#define TREND_ARG_RGT_MG			Pt_RESOURCE (Pt_USER (0), 13)

#define TREND_ARG_PRINTING			Pt_RESOURCE (Pt_USER (0), 15)
#define TREND_ARG_LOAD_DATA			Pt_RESOURCE (Pt_USER (0), 16)
#define TREND_ARG_DATA_PTR			Pt_RESOURCE (Pt_USER (0), 17)

#define TREND_ARG_N_AXIS			Pt_RESOURCE (Pt_USER (0), 20)
#define TREND_ARG_AXIS_MASK			Pt_RESOURCE (Pt_USER (0), 21)
#define TREND_ARG_AXIS_LABELS		Pt_RESOURCE (Pt_USER (0), 22)
#define TREND_ARG_AXIS_MINY			Pt_RESOURCE (Pt_USER (0), 23)
#define TREND_ARG_AXIS_MAXY			Pt_RESOURCE (Pt_USER (0), 24)
#define TREND_ARG_COLOR				Pt_RESOURCE (Pt_USER (0), 30)
#define TREND_ARG_HIST_NAME			Pt_RESOURCE (Pt_USER (0), 40)
#define TREND_ARG_ADDR				Pt_RESOURCE (Pt_USER (0), 41)

#define TREND_ARG_TIME_END			Pt_RESOURCE (Pt_USER (0), 50)
#define TREND_ARG_TIME_WIN			Pt_RESOURCE (Pt_USER (0), 51)
#define TREND_ARG_TIME_PTR			Pt_RESOURCE (Pt_USER (0), 52)



typedef struct pt_s {
	double t;
	double y;
} pt_t;

typedef struct data_buf_s {
	double	last_update;	
	int 	nvalues;
	pt_t	*values;	
} data_buf_t;


/* widget instance structure */
typedef struct cw_trend_widget{
	PtBasicWidget_t	basic;	
	PgColor_t		grid_color;	

	unsigned short	top_mg;
	unsigned short	bot_mg;
	unsigned short	lft_mg;		
	unsigned short	rgt_mg;	
	PhRect_t		trend_rect;		// поле графиков/трендов
	
	int				n_vert;			// кол-во делений для вертикальных осей
	int				n_horz;			// кол-во делений для горизонтальных осей
	
	unsigned int	n_series;		// кол-во трендов
	
	unsigned short	mask;			// маска отображаемых трендов
	PgColor_t		*color;			// цвета трендов
	char			**labels;		// названия осей/трендов
	char			**ax_fmt;		// формат подписи (чисел) к оси
	
	double			*min_y;			// минимум для оси
	double			*max_y;			// максимум для оси
	double			*scale;			// масштаб для оси

//	int				addr;
	char			**hist_name;	// remove it - набор адресов
	data_buf_t		*data_buf;
	
//	IP_Msg			*hmsg;
	IP_Task         *myself;		// remove it
	IP_Task         *hist;			// remove it
	char			*historian;		// remove it

	time_t			time_end;		// смещение для времени тренда
	time_t			time_win;		// окно по времени для тренда
	double			time_ptr;		// курсор на поле тренда
		
	int				printing;
//	int				load_data;

	PhRect_t 		motion_rect;
	PhRect_t 		prv_motion_rect;
	int 			selecting;
	int 			end_selecting;
	
}	CwTrendWidget_t;

/* widget class pointer */
extern PtWidgetClassRef_t *CwTrend;

#endif //__CWTREND_H_